package org.jeecg.demo.wx.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import org.jeecg.demo.wx.dto.*;
import org.jeecg.demo.wx.entity.RlTask;
import org.jeecg.demo.wx.util.PageData;
import org.jeecg.demo.wx.vo.*;
import org.jeecg.modules.system.entity.SysUser;

import java.util.List;

public interface IRlTaskService extends IService<RlTask> {

    /**
     * 用户查看派发任务，时间、完成度过滤
     * @param dto
     * @return
     */
    PageData<QueryTaskVO> queryDispatchTask(QueryTaskDto dto);



    /**
     * 用户派发任务
     * @param task
     */
    void saveDispatchTask(RlTaskSaveDto task);

    /**
     * 修改派发任务
     * @param dto
     */
    void updateDispatchTask(TaskUpdateDto dto);

    /**
     * 用户查看快速处理
     * @param dto
     * @return
     */
    List<QueryTaskVO> queryUserTask(QueryTaskUserDto dto);

    /**
     * 快速处理操作
     * @param dto
     */
    void modifyTaskState(ModifyStateDto dto);

    /**
     * 查询系统用户
     * @param dto
     * @return
     */
    List<SysUser> queryAllUser(QueryUserDto dto);

    /**
     * 通过任务撤回用户日程
     * @param id
     */
    void revokeUserTask(Integer id);

    /**
     * 统计任务状态
     * @param id
     * @return
     */
    TaskCompletedVO countTaskState(String id);

    /**
     * 修复用户数据，如workno和HR表中 未存在系统用户表中的数据
     */
    void fixUserInfo();

    /**
     * 查询用户通过部门
     * @return
     */
    List<UserTreeVO> queryUserByDepart();

    /**
     * 分页模糊查询
     * @param dto
     * @param pageNo
     * @param pageSize
     * @return
     */
    IPage<RlTask> queryPageInfo(QueryTaskWebDto dto, Long pageNo, Long pageSize);

    /**
     * 派发任务web接口
     * @param task
     */
    void saveDispatchTaskFromWeb(RlTaskWebSaveDto task);

    /**
     * 修改任务web接口
     * @param dto
     */
    void updateDispatchTaskFromWeb(RlTaskWebSaveDto dto);

    /**
     * 转换文件地址
     * @param filePath
     * @return
     */
    String convertFilePath(String filePath);

    /**
     * 获得个人派发任务信息详情
     * @param dto
     * @return
     */
    Page<RlTask> queryUserTaskInfo(QueryUserTaskInfoDto dto);

    /**
     * 任务完成情况查询
     * @param id
     * @return
     */
    OneTaskVO queryTaskInfo(Integer id);


    List<UserTreeSecondVO> queryUserByDeparts();
}
